-----------------------------------------------------------------
-----------------------------------------------------------------
-----------------------------------------------------------------
/*
IF EXISTS (SELECT * FROM SYSOBJECTS WHERE name='Parametro' and XTYPE='U')
BEGIN
	--- Si existen datos en la tabla parametro no la borro
	IF (SELECT COUNT(*) FROM [dbo].[Parametro])=0
	BEGIN
		DROP TABLE [dbo].[Parametro]			
	END
END
--GO

CREATE TABLE [dbo].[Parametro](
	[Id] [int] IDENTITY(1,1) UNIQUE NOT NULL,
	[Parametro] [varchar](64) PRIMARY KEY NOT NULL,
	[Valor] [varchar](512) NOT NULL,
	[Descripcion] [varchar](512) DEFAULT '' NOT NULL,
	[Orden] INT DEFAULT 1 NOT NULL
)
--GO
*/

RETURN;
RETURN;
RETURN;
RETURN;
RETURN;
RETURN;
RETURN;
RETURN;
RETURN;
RETURN;
RETURN;
RETURN;


-----------------------------------------------------------------
-----------------------------------------------------------------
-----------------------------------------------------------------

IF EXISTS (SELECT * FROM SYSOBJECTS WHERE name='SeguridadRol' and XTYPE='U')
BEGIN
	DROP TABLE [dbo].[SeguridadRol]
END
--GO

CREATE TABLE [dbo].[SeguridadRol](
	[Id] [int] IDENTITY(1,1) PRIMARY KEY  NOT NULL,
	[CodRol] [varchar](16) NOT NULL,
	[NombreRol] [varchar](64) NOT NULL,
	[Activo] BIT DEFAULT 1 NOT NULL,
)
--GO
ALTER TABLE [dbo].[SeguridadRol] ADD CONSTRAINT [UQ_SeguridadRol_CodRol] UNIQUE ([CodRol])

ALTER TABLE [dbo].[SeguridadRol] ADD CONSTRAINT [UQ_SeguridadRol_NombreRol] UNIQUE ([NombreRol])

-----------------------------------------------------------------
-----------------------------------------------------------------
-----------------------------------------------------------------

IF EXISTS (SELECT * FROM SYSOBJECTS WHERE name='SeguridadUsuario' and XTYPE='U')
BEGIN
	DROP TABLE [dbo].[SeguridadUsuario]
END
--GO

CREATE TABLE [dbo].[SeguridadUsuario](
	[Id] [int] IDENTITY(1,1) PRIMARY KEY NOT NULL,
	[CodRol] [varchar](16) NOT NULL,
	[CodUsuario] [varchar](16) NOT NULL,  --- Documento de identidad
	[Login] [varchar](32) NOT NULL,
	[UserName] [varchar](64) NOT NULL, --- Nombre
	[Password] [varchar](MAX) NOT NULL, --- Clave
	[Activo] BIT DEFAULT 1 NOT NULL
)
--GO
ALTER TABLE [dbo].[SeguridadUsuario] ADD CONSTRAINT [UQ_SeguridadUsuario_CodUsuario] UNIQUE ([CodUsuario])

ALTER TABLE [dbo].[SeguridadUsuario] ADD CONSTRAINT [UQ_SeguridadUsuario_Login] UNIQUE ([Login])

ALTER TABLE [dbo].[SeguridadUsuario] ADD CONSTRAINT [FK_Seguridad.Usuario_Seguridad_Rol] FOREIGN KEY([CodRol])
REFERENCES [dbo].[SeguridadRol] ([CodRol])
--GO

-----------------------------------------------------------------
-----------------------------------------------------------------
-----------------------------------------------------------------

IF EXISTS (SELECT * FROM SYSOBJECTS WHERE name='SeguridadParametroTipo' and XTYPE='U')
BEGIN
	DROP TABLE [dbo].[SeguridadParametroTipo]
END
--GO
CREATE TABLE [SeguridadParametroTipo]
(
[ID] INT IDENTITY(1,1) NOT NULL PRIMARY KEY,
[CodParametroTipo] VARCHAR(32) NOT NULL,
[ParametroTipo] VARCHAR(128) NOT NULL,
[Descripcion] VARCHAR(128) NOT NULL,
[Orden] INT NOT NULL DEFAULT 0,
[FechaUltModif] DATETIME NOT NULL DEFAULT GETDATE(),
[Usuario] VARCHAR(32) NOT NULL,
)

ALTER TABLE [SeguridadParametroTipo] ADD CONSTRAINT [UQ_SeguridadParametroTipo_CodParametroTipo] UNIQUE (CodParametroTipo)

ALTER TABLE [SeguridadParametroTipo] ADD CONSTRAINT [UQ_SeguridadParametroTipo_ParametroTipo] UNIQUE (ParametroTipo)

ALTER TABLE [dbo].[SeguridadParametroTipo] ADD CONSTRAINT [FK_SeguridadParametroTipo_Usuario] FOREIGN KEY([Usuario])
REFERENCES [dbo].[SeguridadUsuario]([Login])

-----------------------------------------------------------------
-----------------------------------------------------------------
-----------------------------------------------------------------

IF EXISTS (SELECT * FROM SYSOBJECTS WHERE name='SeguridadParametro' and XTYPE='U')
BEGIN
	DROP TABLE [dbo].[SeguridadParametro]
END
--GO
CREATE TABLE [SeguridadParametro]
(
[ID] INT IDENTITY(1,1) NOT NULL PRIMARY KEY,
[CodParametro] VARCHAR(64) NOT NULL,
[Parametro] VARCHAR(128) NOT NULL,
[CodParametroTipo] VARCHAR(32) NOT NULL,
[Orden] INT NOT NULL DEFAULT 0,
[Descripcion] VARCHAR(512) NOT NULL,
[Valor] VARCHAR(128) NOT NULL,
[ReadOnly] BIT NOT NULL DEFAULT 0,
[Ocultar] BIT NOT NULL DEFAULT 0,
[FechaUltModif] DATETIME NOT NULL DEFAULT GETDATE(),
[Usuario] VARCHAR(32) NOT NULL,
[TipoDato] VARCHAR(32) NOT NULL DEFAULT 'CADENA'
)

ALTER TABLE [SeguridadParametro] ADD CONSTRAINT [UQ_SeguridadParametro_CodParametro] UNIQUE (CodParametro)

ALTER TABLE [SeguridadParametro] ADD CONSTRAINT [UQ_SeguridadParametro_Parametro] UNIQUE (Parametro)

ALTER TABLE [SeguridadParametro] ADD CONSTRAINT FKSeguridadParametro_SeguridadParametroTipo FOREIGN KEY(CodParametroTipo) 
REFERENCES SeguridadParametroTipo(CodParametroTipo)

ALTER TABLE [dbo].[SeguridadParametro] ADD CONSTRAINT [FK_SeguridadParametro_Usuario] FOREIGN KEY([Usuario])
REFERENCES [dbo].[SeguridadUsuario]([Login])


-----------------------------------------------------------------
-----------------------------------------------------------------
-----------------------------------------------------------------

IF EXISTS (SELECT * FROM SYSOBJECTS WHERE name='SeguridadMenu' and XTYPE='U')
BEGIN
	DROP TABLE [dbo].[SeguridadMenu]
END
--GO
CREATE TABLE [SeguridadMenu]
(
	ID INT IDENTITY(1,1) NOT NULL PRIMARY KEY,
	FechaGrab DATETIME NOT NULL DEFAULT GETDATE(),
	UsuarioGrab VARCHAR(32) NOT NULL,
	Codigo VARCHAR(128) NOT NULL, -- EJEMPLO: Aplicacion.Maestros.Recaudos (ESTE CODIGO SE GENERA DE FORMA AUTOMATICA)
	CodigoSuperior VARCHAR(128),
	OrdenNodo INT NOT NULL DEFAULT 0,
	Formulario VARCHAR(128),
	etiqueta VARCHAR(64) NOT NULL,
	descripcion VARCHAR(256) NOT NULL, --- este es el texto que aparecera al pasar el mouse por la opcion
	icono VARBINARY(MAX)
)
--GO
ALTER TABLE [dbo].[SeguridadMenu] ADD CONSTRAINT [UQ_SeguridadMenu_Codigo] UNIQUE ([Codigo])

ALTER TABLE [dbo].[SeguridadMenu] ADD CONSTRAINT [FK_SeguridadMenu_SeguridadMenu] FOREIGN KEY([CodigoSuperior])
REFERENCES [SeguridadMenu](Codigo)

--ALTER TABLE [dbo].[SeguridadMenu] ADD CONSTRAINT [FK_SeguridadMenu_SeguridadUsuario] FOREIGN KEY([UsuarioGrab])
--REFERENCES [dbo].[SeguridadUsuario] ([Login])

-----------------------------------------------------------------
-----------------------------------------------------------------
-----------------------------------------------------------------

IF EXISTS (SELECT * FROM SYSOBJECTS WHERE name='SeguridadRolMenu' and XTYPE='U')
BEGIN
	DROP TABLE [dbo].[SeguridadRolMenu]
END
--GO
CREATE TABLE [SeguridadRolMenu]
(
ID INT IDENTITY(1,1) NOT NULL PRIMARY KEY,
FechaGrab DATETIME NOT NULL DEFAULT GETDATE(),
UsuarioGrab VARCHAR(32) NOT NULL,
CodMenu VARCHAR(128) NOT NULL,
CodRol VARCHAR(16) NOT NULL
)

ALTER TABLE [SeguridadRolMenu] ADD CONSTRAINT [UQ_CodMenu_CodRol] UNIQUE (CodMenu,CodRol)

ALTER TABLE [SeguridadRolMenu] ADD CONSTRAINT FKMenuRolSYS_Menu FOREIGN KEY(CodMenu) 
REFERENCES SeguridadMenu(Codigo)

ALTER TABLE [SeguridadRolMenu] ADD CONSTRAINT FKMenuRol_Rol FOREIGN KEY(CodRol) 
REFERENCES SeguridadRol(CodRol)

--ALTER TABLE [dbo].[SeguridadRolMenu] ADD CONSTRAINT [FK_SeguridadMenuRol_Usuario] FOREIGN KEY([UsuarioGrab])
--REFERENCES [dbo].[SeguridadUsuario]([Login])


--------------------------------------------------------------------------------------------------------------------
--En esta tabla se grabaran algunos datos del usuario en la conexion (CodRol, Host, CodUsuario, FechaInicio, etc...)
--La informacion grabada en esta tabla sera valida UNICAMENTE para la conexion, cada vez que se reinicie dicha conexion,
--se reiniciaran los datos de esta tabla
--------------------------------------------------------------------------------------------------------------------

IF EXISTS (SELECT * FROM SYSOBJECTS WHERE name='SeguridadDatosSession' and XTYPE='U')
BEGIN
	DROP TABLE [dbo].[SeguridadDatosSession]
END
--GO

CREATE TABLE [SeguridadDatosSession]
(
	 ID INT IDENTITY(1,1) NOT NULL PRIMARY KEY
	--,IdConexion INT NOT NULL
	,Host VARCHAR(128) NOT NULL
	,Usuario VARCHAR(32) NOT NULL
	,FechaInicio DATETIME NOT NULL DEFAULT GETDATE()	
);

ALTER TABLE [dbo].[SeguridadDatosSession] ADD CONSTRAINT [UQ_SeguridadDatosSession_Host] UNIQUE ([Host])

ALTER TABLE [dbo].[SeguridadDatosSession] ADD CONSTRAINT [FK_SeguridadDatosSession_Usuario] FOREIGN KEY([Usuario])
REFERENCES [dbo].[SeguridadUsuario] ([Login])
--GO

-----------------------------------------------------------------
-----------------------------------------------------------------
-----------------------------------------------------------------

IF EXISTS (SELECT * FROM SYSOBJECTS WHERE name='SeguridadLogEventos' and XTYPE='U')
BEGIN
	DROP TABLE [dbo].[SeguridadLogEventos]
END
--GO

CREATE TABLE [SeguridadLogEventos]
(
	 ID INT IDENTITY(1,1) NOT NULL PRIMARY KEY
	,Host VARCHAR(128) NOT NULL
	,Usuario VARCHAR(32) NOT NULL
	,Fecha DATETIME NOT NULL DEFAULT GETDATE()
	,Evento VARCHAR(256) NOT NULL
	,Detalle VARCHAR(MAX)
);

ALTER TABLE [dbo].[SeguridadLogEventos] ADD CONSTRAINT [FK_SeguridadLogEventos_Usuario] FOREIGN KEY([Usuario])
REFERENCES [dbo].[SeguridadUsuario] ([Login])
--GO

-----------------------------------------------------------------
-----------------------------------------------------------------
-----------------------------------------------------------------

------IF EXISTS (SELECT * FROM SYSOBJECTS WHERE name='PresupuestoMovimiento_REVERSION' and XTYPE='U')
------BEGIN
------	DROP TABLE [dbo].[PresupuestoMovimiento_REVERSION]
------END
--------GO

------CREATE TABLE [dbo].[PresupuestoMovimiento_REVERSION](
------	[Id] [int] IDENTITY(1,1) PRIMARY KEY NOT NULL,
------	[CodMovimiento] [varchar](16) NOT NULL,  --- Es un consecutivo parecido al codigo del Compromiso
------	[CodPresupuesto] [varchar](16) NOT NULL,
------	[CodRubroOrigen] [varchar](16) NOT NULL,
------	[CodCentroCostoOrigen] [varchar](16) NOT NULL,
------	[ValorInicialPresupOrigen] [decimal](18,2) NOT NULL,
------	[CodRubroDestino] [varchar](16) NOT NULL,
------	[CodCentroCostoDestino] [varchar](16) NOT NULL,
------	[ValorInicialPresupDestino] [decimal](18,2) NOT NULL,
------	[Fecha] [datetime] NOT NULL,
------	[Valor] [decimal](18,2) NOT NULL,	
------	[Usuario] [varchar](32) NOT NULL,	
------	[Observaciones] VARCHAR(MAX) NULL,
------	[Fecha_REVERSION] [datetime] NOT NULL DEFAULT GETDATE(),
------	[Usuario_REVERSION] [varchar](32) NOT NULL,
------	[Observaciones_REVERSION] VARCHAR(MAX) NOT NULL	
------)
--------GO 

------ALTER TABLE [PresupuestoMovimiento_REVERSION] ADD CONSTRAINT [UQ_PresupuestoMovimientoREVERSION_CodMovimiento] UNIQUE(CodMovimiento)
--------GO

------ALTER TABLE [dbo].[PresupuestoMovimiento_REVERSION] ADD CONSTRAINT [FK_PresupuestoMovimientoREVERSION_Usuario] FOREIGN KEY([Usuario_REVERSION])
------REFERENCES [dbo].[SeguridadUsuario] ([Login])
--------GO

-----------------------------------------------------------------
-----------------------------------------------------------------
-----------------------------------------------------------------

--------------IF EXISTS (SELECT * FROM SYSOBJECTS WHERE name='Compromiso_REVERSION' and XTYPE='U')
--------------BEGIN
--------------	DROP TABLE [dbo].[Compromiso_REVERSION]
--------------END
----------------GO
--------------CREATE TABLE [dbo].[Compromiso_REVERSION](
--------------	[Id] [int] IDENTITY(1,1) PRIMARY KEY NOT NULL,
--------------	[CodCompromiso] [varchar](16) NOT NULL,
--------------	[CodSolicitud] [varchar](16) NOT NULL,
--------------	[CodPresupuesto] [varchar](16) NOT NULL,
--------------	[CodRubro] [varchar](16) NOT NULL,
--------------	[CodCentroCosto] [varchar](16) NOT NULL,
--------------	[CodCuentaContable] [varchar](16) NOT NULL,
--------------	[CodOrdenCompra] [varchar](8),-- NOT NULL,
--------------	[CodContrato] [varchar](16),-- NOT NULL,
--------------	[ItemsOrdenCompra] [varchar](512),-- NOT NULL,  --- una lista con los items definidos en la odrden que seran comprometidos.
--------------	[FechaCreacion] [datetime] NOT NULL,
--------------	[FechaUltMod] [datetime] NOT NULL,
--------------	[ValorInicialCompromiso] [decimal](18,2) NOT NULL,
--------------	[SaldoActualCompromiso] [decimal](18,2) NOT NULL,
--------------	[Observaciones] VARCHAR(MAX) NULL,
--------------	[Usuario] [varchar](32) NOT NULL,
--------------	[Fecha_REVERSION] [datetime] NOT NULL DEFAULT GETDATE(),
--------------	[Usuario_REVERSION] [varchar](32) NOT NULL,
--------------	[Observaciones_REVERSION] VARCHAR(MAX) NOT NULL	
--------------)
----------------GO

--------------ALTER TABLE [Compromiso_REVERSION] ADD CONSTRAINT [UQ_CompromisoREVERSION_CodCompromiso] UNIQUE(CodCompromiso)
----------------GO
--------------ALTER TABLE [dbo].[Compromiso_REVERSION] ADD CONSTRAINT [FK_CompromisoREVERSION_Usuario] FOREIGN KEY([Usuario_REVERSION])
--------------REFERENCES [dbo].[SeguridadUsuario] ([Login])

-----------------------------------------------------------------
-----------------------------------------------------------------
-----------------------------------------------------------------

IF EXISTS (SELECT * FROM SYSOBJECTS WHERE name='RubroTipo' and XTYPE='U')
BEGIN
	DROP TABLE [dbo].[RubroTipo]
END
--GO
CREATE TABLE [dbo].[RubroTipo](
	[Id] [int] IDENTITY(1,1) PRIMARY KEY NOT NULL,
	[CodTipo] [varchar](16) NOT NULL,
	[NombreTipo] [varchar](64) NOT NULL,
	[Activo] BIT DEFAULT 1 NOT NULL,
	[Orden] INT NOT NULL DEFAULT 0
)
--GO

ALTER TABLE [dbo].[RubroTipo] ADD CONSTRAINT [UQ_RubroTipo_CodTipo] UNIQUE ([CodTipo])

ALTER TABLE [dbo].[RubroTipo] ADD CONSTRAINT [UQ_RubroTipo_NombreTipo] UNIQUE ([NombreTipo])

-----------------------------------------------------------------
-----------------------------------------------------------------
-----------------------------------------------------------------

IF EXISTS (SELECT * FROM SYSOBJECTS WHERE name='Rubro' and XTYPE='U')
BEGIN
	DROP TABLE [dbo].[Rubro]
END
--GO

CREATE TABLE [dbo].[Rubro](
	[Id] [int] IDENTITY(1,1) PRIMARY KEY NOT NULL,
	[CodRubro] [varchar](16) NOT NULL,
	[CodTipo] [varchar](16) NOT NULL,
	[NombreRubro] [varchar](128) NOT NULL,
	[Activo] BIT DEFAULT 1 NOT NULL,
	[Orden] INT NOT NULL DEFAULT 0
)
--GO
ALTER TABLE [dbo].[Rubro] ADD CONSTRAINT [UQ_Rubro_CodRubro] UNIQUE ([CodRubro])

ALTER TABLE [dbo].[Rubro] ADD CONSTRAINT [FK_Rubro_RubroTipo] FOREIGN KEY([CodTipo])
REFERENCES [dbo].[RubroTipo] ([CodTipo])
--GO

-----------------------------------------------------------------
-----------------------------------------------------------------
-----------------------------------------------------------------

IF EXISTS (SELECT * FROM SYSOBJECTS WHERE name='RubroAsociacionCuenta' and XTYPE='U')
BEGIN
	DROP TABLE [dbo].[RubroAsociacionCuenta]
END
--GO

CREATE TABLE [dbo].[RubroAsociacionCuenta](
	[Id] [int] IDENTITY(1,1) PRIMARY KEY NOT NULL,
	[CodRubro] [varchar](16) NOT NULL,
	[CodCuentaContable] [varchar](16) NOT NULL,
	[Tipo] [smallint] NULL,
	[Activo] BIT DEFAULT 1 NOT NULL
)
--GO

ALTER TABLE [RubroAsociacionCuenta] ADD CONSTRAINT [UQ_CodRubro_CodCuentaContable] UNIQUE ([CodRubro],[CodCuentaContable])

ALTER TABLE [dbo].[RubroAsociacionCuenta]  ADD  CONSTRAINT [FK_RubroAsoCuenta_Rubro] FOREIGN KEY([CodRubro])
REFERENCES [dbo].[Rubro] ([CodRubro])
--GO

-----------------------------------------------------------------
-----------------------------------------------------------------
-----------------------------------------------------------------

IF EXISTS (SELECT * FROM SYSOBJECTS WHERE name='CentroCosto' and XTYPE='U')
BEGIN
	DROP TABLE [dbo].[CentroCosto]
END
--GO
CREATE TABLE [dbo].[CentroCosto](
	[Id] [int] IDENTITY(1,1) PRIMARY KEY NOT NULL,
	[CodCentroCosto] [varchar](16) NOT NULL,
	[CodCentroCostoSuperior] [varchar](16),  --- Este campo guarda el codigo del Grupo del CenCosto, ejemplo (Vicepresidencia, Precidencia, DIDESI, etc..)
	[NombreCentroCosto] [varchar](128) NOT NULL,
	[Activo] BIT DEFAULT 1 NOT NULL
)
--GO
ALTER TABLE [CentroCosto] ADD CONSTRAINT [UQ_CentroCosto_CodCentroCosto] UNIQUE ([CodCentroCosto])
--GO
ALTER TABLE [CentroCosto] ADD CONSTRAINT [UQ_CentroCosto_NombreCentroCosto] UNIQUE ([NombreCentroCosto])
--GO
ALTER TABLE [dbo].[CentroCosto] ADD  CONSTRAINT [FK_CentroCosto_CentroCostoSuperior] FOREIGN KEY([CodCentroCostoSuperior])
REFERENCES [dbo].[CentroCosto] ([CodCentroCosto])
--GO

-----------------------------------------------------------------
-----------------------------------------------------------------
-----------------------------------------------------------------

IF EXISTS (SELECT * FROM SYSOBJECTS WHERE name='PresupuestoAnualCabecera' and XTYPE='U')
BEGIN
	DROP TABLE [dbo].[PresupuestoAnualCabecera]
END
--GO

CREATE TABLE [dbo].[PresupuestoAnualCabecera](
	[Id] [int] IDENTITY(1,1) PRIMARY KEY NOT NULL,
	[CodPresupuesto] [varchar](16) NOT NULL,
	[Vigencia] [smallint] NULL,
	[FechaCreacion] [datetime] DEFAULT GETDATE() NOT NULL,
	[FechaUltMod] [datetime] DEFAULT GETDATE() NOT NULL,
	[Publicado] BIT NOT NULL DEFAULT 0,
	[Activo] BIT DEFAULT 0 NOT NULL	
)
--GO
ALTER TABLE [PresupuestoAnualCabecera] ADD CONSTRAINT [UQ_PresupuestoAnualCabecera_CodPresupuesto] UNIQUE ([CodPresupuesto])

ALTER TABLE [PresupuestoAnualCabecera] ADD CONSTRAINT [UQ_PresupuestoAnualCabecera_Vigencia] UNIQUE ([Vigencia])

-----------------------------------------------------------------
-----------------------------------------------------------------
-----------------------------------------------------------------

IF EXISTS (SELECT * FROM SYSOBJECTS WHERE name='PresupuestoAnualPeriodo' and XTYPE='U')
BEGIN
	DROP TABLE [dbo].[PresupuestoAnualPeriodo]
END
--GO
CREATE TABLE [dbo].[PresupuestoAnualPeriodo](
	[Id] [int] IDENTITY(1,1) PRIMARY KEY NOT NULL,
	[CodPresupuesto] [varchar](16) NOT NULL,
	[Periodo] [varchar](8) NULL,
	[NombrePeriodo]VARCHAR(32) NOT NULL,
	[Activo] BIT DEFAULT 0 NOT NULL	
)
--GO
ALTER TABLE [PresupuestoAnualPeriodo] ADD CONSTRAINT [UQ_PresupuestoAnualPeriodo_Periodo] UNIQUE ([Periodo])

ALTER TABLE [PresupuestoAnualPeriodo] ADD CONSTRAINT [UQ_PresupuestoAnualPeriodo_Nombre] UNIQUE ([NombrePeriodo])

ALTER TABLE [dbo].[PresupuestoAnualPeriodo] ADD CONSTRAINT [FK_PresupuestoAnualPeriodo_PresupuestoAnual] FOREIGN KEY([CodPresupuesto])
REFERENCES [dbo].[PresupuestoAnualCabecera] ([CodPresupuesto])

-----------------------------------------------------------------
-----------------------------------------------------------------
-----------------------------------------------------------------

IF EXISTS (SELECT * FROM SYSOBJECTS WHERE name='PresupuestoAnualEn3Fases' and XTYPE='U')
BEGIN
	DROP TABLE [dbo].[PresupuestoAnualEn3Fases]
END
--GO

CREATE TABLE [dbo].[PresupuestoAnualEn3Fases](
	[Id] [int] IDENTITY(1,1) PRIMARY KEY NOT NULL,
	[CodPresupuesto] [varchar](16) NOT NULL,
	[CodRubro] [varchar](16) NOT NULL,
	[ValorPPTOCotecmar] [decimal](18,2) DEFAULT 0 NOT NULL,
	[ValorPPTOSaldosPCTMAR] [decimal](18,2) DEFAULT 0 NOT NULL,
	[ValorPPTOSaldosVPCTMAR] [decimal](18,2) DEFAULT 0 NOT NULL,
	[ValorPPTOPyG] [decimal](18,2) DEFAULT 0 NOT NULL,
	[ValorPPTOInterno] [decimal](18,2) DEFAULT 0 NOT NULL,
	[FechaCreacion] [datetime] DEFAULT GETDATE() NOT NULL,
	[Usuario] [varchar](32) NOT NULL
)
--GO

ALTER TABLE [PresupuestoAnualEn3Fases] ADD CONSTRAINT [UQ_PresupuestoAnualEn3Fases_CodPresupuesto_CodRubro] UNIQUE ([CodPresupuesto],[CodRubro])
--GO

ALTER TABLE [PresupuestoAnualEn3Fases] ADD CONSTRAINT CHK_ValorPPTOCotecmar CHECK ([ValorPPTOCotecmar]>=0)
--GO

ALTER TABLE [PresupuestoAnualEn3Fases] ADD CONSTRAINT CHK_ValorPPTOSaldosPCTMAR CHECK ([ValorPPTOSaldosPCTMAR]>=0)
--GO

ALTER TABLE [PresupuestoAnualEn3Fases] ADD CONSTRAINT CHK_ValorPPTOSaldosVPCTMAR CHECK ([ValorPPTOSaldosVPCTMAR]>=0)
--GO

ALTER TABLE [PresupuestoAnualEn3Fases] ADD CONSTRAINT CHK_VrPPTOCot_VrPPTOPCTMAR_VrPPTOVPCTMAR CHECK ([ValorPPTOCotecmar]>=[ValorPPTOSaldosPCTMAR]+[ValorPPTOSaldosVPCTMAR])
--GO

ALTER TABLE [PresupuestoAnualEn3Fases] ADD CONSTRAINT CHK_ValorPPTOPyG CHECK ([ValorPPTOPyG]=[ValorPPTOCotecmar]-[ValorPPTOSaldosPCTMAR])
--GO

ALTER TABLE [PresupuestoAnualEn3Fases] ADD CONSTRAINT CHK_ValorPPTOInterno CHECK ([ValorPPTOInterno]=[ValorPPTOCotecmar]-[ValorPPTOSaldosPCTMAR]-[ValorPPTOSaldosVPCTMAR])
--GO

ALTER TABLE [dbo].[PresupuestoAnualEn3Fases] ADD CONSTRAINT [FK_PresupuestoAnualEn3Fases_Rubro] FOREIGN KEY([CodRubro])
REFERENCES [dbo].[Rubro] ([CodRubro])
--GO

ALTER TABLE [dbo].[PresupuestoAnualEn3Fases] ADD CONSTRAINT [FK_PresupuestoAnualEn3Fases_PresupuestoAnual] FOREIGN KEY([CodPresupuesto])
REFERENCES [dbo].[PresupuestoAnualCabecera] ([CodPresupuesto])
--GO

ALTER TABLE [dbo].[PresupuestoAnualEn3Fases] ADD CONSTRAINT [FK_PresupuestoAnualEn3Fases_Usuario] FOREIGN KEY([Usuario])
REFERENCES [dbo].[SeguridadUsuario] ([Login])
--GO

-----------------------------------------------------------------
-----------------------------------------------------------------
-----------------------------------------------------------------

IF EXISTS (SELECT * FROM SYSOBJECTS WHERE name='PresupuestoAnualDetalle' and XTYPE='U')
BEGIN
	DROP TABLE [dbo].[PresupuestoAnualDetalle]
END
--GO

CREATE TABLE [dbo].[PresupuestoAnualDetalle](
	[Id] [int] IDENTITY(1,1) PRIMARY KEY NOT NULL,
	[CodPresupuesto] [varchar](16) NOT NULL,
	[CodRubro] [varchar](16) NOT NULL,
	[CodCentroCosto] [varchar](16) NOT NULL,
	[FechaCreacion] [date] DEFAULT GETDATE() NOT NULL,
	[ValorInicialPresupuesto] [decimal](18,2) NOT NULL,
	[ValorActualPresupuesto] [decimal](18,2) NOT NULL,
	[ValorEjecutado] [decimal](18,2) NOT NULL,
	[ValorPendienteEjecutar] [decimal](18,2) NOT NULL,
	[ValorFacturado] [decimal](18,2) NOT NULL,
	[PorcEjecutado] [decimal](10,3) NOT NULL,
	[PorcPendienteEjecutar] [decimal](10,3) NOT NULL,
	[PorcFacturado] [decimal](10,3) NOT NULL,
	[Activo] BIT DEFAULT 1 NOT NULL,
	[Usuario] [varchar](32) NOT NULL
)
--GO

ALTER TABLE [PresupuestoAnualDetalle] ADD CONSTRAINT [UQ_Detalle_CodPresupuesto_CodRubro_CodCentroCosto] UNIQUE ([CodPresupuesto],[CodRubro],[CodCentroCosto])
--GO

ALTER TABLE [PresupuestoAnualDetalle] ADD CONSTRAINT CHK_ValorInicialPresupuesto CHECK ([ValorInicialPresupuesto]>=0)
--GO

ALTER TABLE [PresupuestoAnualDetalle] ADD CONSTRAINT CHK_ValorActualPresupuesto CHECK ([ValorActualPresupuesto]>=0)
--GO

--------ALTER TABLE [PresupuestoAnualDetalle] ADD CONSTRAINT CHK_ValorEjecutado CHECK ([ValorEjecutado]>=0)
--GO

--------ALTER TABLE [PresupuestoAnualDetalle] ADD CONSTRAINT CHK_ValorPendienteEjecutar CHECK ([ValorPendienteEjecutar]>=0)
--GO

--------ALTER TABLE [PresupuestoAnualDetalle] ADD CONSTRAINT CHK_ValorFacturado CHECK ([ValorFacturado]>=0)
--GO

ALTER TABLE [PresupuestoAnualDetalle] ADD CONSTRAINT CHK_PorcEjecutado CHECK ([PorcEjecutado]>=0)
--GO

ALTER TABLE [PresupuestoAnualDetalle] ADD CONSTRAINT CHK_PorcPendienteEjecutar CHECK ([PorcPendienteEjecutar]>=0)
--GO

ALTER TABLE [PresupuestoAnualDetalle] ADD CONSTRAINT CHK_PorcFacturado CHECK ([PorcFacturado]>=0)
--GO

ALTER TABLE [dbo].[PresupuestoAnualDetalle] ADD CONSTRAINT [FK_PresupuestoAnualDetalle_Rubro] FOREIGN KEY([CodRubro])
REFERENCES [dbo].[Rubro] ([CodRubro])
--GO

ALTER TABLE [dbo].[PresupuestoAnualDetalle] ADD CONSTRAINT [FK_PresupuestoAnualDetalle_PresupuestoAnual] FOREIGN KEY([CodPresupuesto])
REFERENCES [dbo].[PresupuestoAnualCabecera] ([CodPresupuesto])
--GO

ALTER TABLE [dbo].[PresupuestoAnualDetalle] ADD  CONSTRAINT [FK_PresupuestoAnualDetalle_CentroCosto] FOREIGN KEY([CodCentroCosto])
REFERENCES [dbo].[CentroCosto] ([CodCentroCosto])
--GO

ALTER TABLE [dbo].[PresupuestoAnualDetalle] ADD CONSTRAINT [FK_PresupuestoAnualDetalle_Usuario] FOREIGN KEY([Usuario])
REFERENCES [dbo].[SeguridadUsuario] ([Login])
--GO

ALTER TABLE [dbo].[PresupuestoAnualDetalle] ADD CONSTRAINT [FK_PresupuestoAnualDetalle_CodPresupuesto_CodRubro] FOREIGN KEY([CodPresupuesto],[CodRubro])
REFERENCES [dbo].[PresupuestoAnualEn3Fases] ([CodPresupuesto],[CodRubro])
--GO

-----------------------------------------------------------------
-----------------------------------------------------------------
-----------------------------------------------------------------

IF EXISTS (SELECT * FROM SYSOBJECTS WHERE name='PresupuestoMovimiento' and XTYPE='U')
BEGIN
	DROP TABLE [dbo].[PresupuestoMovimiento]
END
--GO

CREATE TABLE [dbo].[PresupuestoMovimiento](
	[Id] [int] IDENTITY(1,1) PRIMARY KEY NOT NULL,
	[CodMovimiento] [varchar](16) NOT NULL,  --- Es un consecutivo parecido al codigo del Compromiso
	[CodPresupuesto] [varchar](16) NOT NULL,
	[CodRubroOrigen] [varchar](16) NOT NULL,
	[CodCentroCostoOrigen] [varchar](16) NOT NULL,
	[ValorInicialPresupOrigen] [decimal](18,2) NOT NULL,
	[CodRubroDestino] [varchar](16) NOT NULL,
	[CodCentroCostoDestino] [varchar](16) NOT NULL,
	[ValorInicialPresupDestino] [decimal](18,2) NOT NULL,
	[Fecha] [datetime] NOT NULL DEFAULT GETDATE(),
	[Valor] [decimal](18,2) NOT NULL,	
	[Usuario] [varchar](32) NOT NULL,	
	[Observaciones] VARCHAR(MAX) NULL,
	[CodMovimiento_REVERSION] [varchar](16) NULL,
	[ValorPendienteEjecutarOrigen] [decimal](18,2) NOT NULL,
	[ValorPendienteEjecutarDestino] [decimal](18,2) NOT NULL	
)
--GO 

ALTER TABLE [PresupuestoMovimiento] ADD CONSTRAINT [UQ_PresupuestoMovimiento_CodMovimiento] UNIQUE(CodMovimiento)
--GO

ALTER TABLE [PresupuestoMovimiento] ADD CONSTRAINT CHK_Valor CHECK ([Valor]<>0)
--GO

ALTER TABLE [dbo].[PresupuestoMovimiento] ADD CONSTRAINT [FK_PresupuestoMovimiento_PresupuestoDetalle_Origen] FOREIGN KEY([CodPresupuesto], [CodRubroOrigen], [CodCentroCostoOrigen])
REFERENCES [dbo].[PresupuestoAnualDetalle] ([CodPresupuesto], [CodRubro], [CodCentroCosto])
--GO

ALTER TABLE [dbo].[PresupuestoMovimiento] ADD CONSTRAINT [FK_PresupuestoMovimiento_PresupuestoDetalle_Destino] FOREIGN KEY([CodPresupuesto], [CodRubroDestino], [CodCentroCostoDestino])
REFERENCES [dbo].[PresupuestoAnualDetalle] ([CodPresupuesto], [CodRubro], [CodCentroCosto])
--GO

ALTER TABLE [dbo].[PresupuestoMovimiento] ADD CONSTRAINT [FK_PresupuestoMovimiento_Usuario] FOREIGN KEY([Usuario])
REFERENCES [dbo].[SeguridadUsuario] ([Login])
--GO


-----------------------------------------------------------------
-----------------------------------------------------------------
-----------------------------------------------------------------

IF EXISTS (SELECT * FROM SYSOBJECTS WHERE name='PresupuestoMovimientoSaldos' and XTYPE='U')
BEGIN
	DROP TABLE [dbo].[PresupuestoMovimientoSaldos]
END
--GO

CREATE TABLE [dbo].[PresupuestoMovimientoSaldos](
	[Id] [int] IDENTITY(1,1) PRIMARY KEY NOT NULL,
	[CodMovimientoSaldos] [varchar](16) NOT NULL,  --- Es un consecutivo parecido al codigo del Compromiso
	[CodPresupuesto] [varchar](16) NOT NULL,
	[CodRubroOrigen] [varchar](16) NOT NULL,
	[CodSaldoOrigen] [varchar](16) NOT NULL,  -- POSIBLES VALORES: "SALDO PCTMAR" y "SALDO VPCTMAR"
	[ValorInicialSaldoOrigen] [decimal](18,2) NOT NULL,
	[CodRubroDestino] [varchar](16) NOT NULL,
	[CodCentroCostoDestino] [varchar](16) NOT NULL,
	[ValorInicialPresupDestino] [decimal](18,2) NOT NULL,
	[Fecha] [datetime] NOT NULL DEFAULT GETDATE(),
	[Valor] [decimal](18,2) NOT NULL,	
	[Usuario] [varchar](32) NOT NULL,	
	[Observaciones] VARCHAR(MAX) NULL,
	[CodMovimiento_REVERSION] [varchar](16) NULL,
	--[ValorPendienteEjecutarOrigen] [decimal](18,2) NOT NULL,
	[ValorPendienteEjecutarDestino] [decimal](18,2) NOT NULL	
)
--GO 

ALTER TABLE [PresupuestoMovimientoSaldos] ADD CONSTRAINT [UQ_PresupuestoMovimientoSaldos_CodMovimientoSaldos] UNIQUE(CodMovimientoSaldos)
--GO

ALTER TABLE [PresupuestoMovimientoSaldos] ADD CONSTRAINT CHK_PresupuestoMovimientoSaldos_Valor CHECK ([Valor]<>0)
--GO

--ALTER TABLE [dbo].[PresupuestoMovimientoSaldos] ADD CONSTRAINT [FK_PresupuestoMovimiento_PresupuestoDetalle_Origen] FOREIGN KEY([CodPresupuesto], [CodRubroOrigen], [CodCentroCostoOrigen])
--REFERENCES [dbo].[PresupuestoAnualDetalle] ([CodPresupuesto], [CodRubro], [CodCentroCosto])
--GO

ALTER TABLE [dbo].[PresupuestoMovimientoSaldos] ADD CONSTRAINT [FK_PresupuestoMovimientoSaldos_PresupuestoDetalle_Destino] FOREIGN KEY([CodPresupuesto], [CodRubroDestino], [CodCentroCostoDestino])
REFERENCES [dbo].[PresupuestoAnualDetalle] ([CodPresupuesto], [CodRubro], [CodCentroCosto])
--GO

ALTER TABLE [dbo].[PresupuestoMovimientoSaldos] ADD CONSTRAINT [FK_PresupuestoMovimientoSaldos_Usuario] FOREIGN KEY([Usuario])
REFERENCES [dbo].[SeguridadUsuario] ([Login])
--GO


-----------------------------------------------------------------
-----------------------------------------------------------------
-----------------------------------------------------------------

IF EXISTS (SELECT * FROM SYSOBJECTS WHERE name='CompromisoSolicitud' and XTYPE='U')
BEGIN
	DROP TABLE [dbo].[CompromisoSolicitud]
END
--GO

CREATE TABLE [dbo].[CompromisoSolicitud](
	[Id] [int] IDENTITY(1,1) PRIMARY KEY NOT NULL,
	[CodSolicitud] [varchar](32) NOT NULL,
	[CodOrdenCompra] [varchar](32),-- NOT NULL,
	[CodContrato] [varchar](32),-- NOT NULL,
	[FechaSolicitud] [datetime] DEFAULT GETDATE() NOT NULL,
	[Activo] BIT DEFAULT 1 NOT NULL,
	[Observaciones] VARCHAR(MAX) NULL,
	[Estado] VARCHAR(32) NOT NULL,
	[CodPresupuesto] VARCHAR(16) NOT NULL,
	[Usuario] [varchar](32) NOT NULL,
	[IdProveedor] INT NULL,
	[NombreProveedor] VARCHAR(256) NULL,
	[OrdenGlobal] BIT DEFAULT 0 NOT NULL	
 )
--GO

ALTER TABLE [CompromisoSolicitud] ADD CONSTRAINT [UQ_CompromisoSolicitud_CodSolicitud] UNIQUE (CodSolicitud) 
--GO

CREATE UNIQUE NONCLUSTERED INDEX [UQ_CompromisoSolicitud_CodOrdenCompra] ON [CompromisoSolicitud](CodOrdenCompra) WHERE CodOrdenCompra IS NOT NULL; 
--ALTER TABLE [CompromisoSolicitud] ADD CONSTRAINT [UQ_CompromisoSolicitud_CodOrdenCompra] UNIQUE(CodOrdenCompra)
--GO

CREATE UNIQUE NONCLUSTERED INDEX [UQ_CompromisoSolicitud_CodContrato_NombreProveedor] ON [CompromisoSolicitud](CodContrato,NombreProveedor) WHERE CodContrato IS NOT NULL; 
--ALTER TABLE [CompromisoSolicitud] ADD CONSTRAINT [UQ_CompromisoSolicitud_CodContrato] UNIQUE(CodContrato)
--GO

ALTER TABLE [dbo].[CompromisoSolicitud] ADD CONSTRAINT [FK_CompromisoSolicitud_Presupuesto] FOREIGN KEY([CodPresupuesto])
REFERENCES [dbo].[PresupuestoAnualCabecera] ([CodPresupuesto])

ALTER TABLE [dbo].[CompromisoSolicitud] ADD CONSTRAINT [FK_CompromisoSolicitud_Usuario] FOREIGN KEY([Usuario])
REFERENCES [dbo].[SeguridadUsuario] ([Login])

--GO

-----------------------------------------------------------------
-----------------------------------------------------------------
-----------------------------------------------------------------

IF EXISTS (SELECT * FROM SYSOBJECTS WHERE name='CompromisoSolicitud_Historial' and XTYPE='U')
BEGIN
	DROP TABLE [dbo].[CompromisoSolicitud_Historial]
END
--GO

CREATE TABLE [dbo].[CompromisoSolicitud_Historial](
	[Id] [int] IDENTITY(1,1) PRIMARY KEY NOT NULL,
	[CodSolicitud] [varchar](32) NOT NULL,
	[AccionRealizada] VARCHAR(64) NOT NULL,
	[Observaciones] VARCHAR(MAX) NULL,
	[FechaGrab] DATETIME NOT NULL DEFAULT GETDATE(),
	[Usuario] [varchar](32) NOT NULL,
 )
--GO

ALTER TABLE [dbo].[CompromisoSolicitud_Historial] ADD CONSTRAINT [FK_CompromisoSolicitud_Historial_CodSolicitud] FOREIGN KEY([CodSolicitud])
REFERENCES [dbo].[CompromisoSolicitud] ([CodSolicitud])
--GO

ALTER TABLE [dbo].[CompromisoSolicitud_Historial] ADD CONSTRAINT [FK_CompromisoSolicitud_Historial_Usuario] FOREIGN KEY([Usuario])
REFERENCES [dbo].[SeguridadUsuario] ([Login])
--GO

-----------------------------------------------------------------
-----------------------------------------------------------------
-----------------------------------------------------------------

IF EXISTS (SELECT * FROM SYSOBJECTS WHERE name='Compromiso' and XTYPE='U')
BEGIN
	DROP TABLE [dbo].[Compromiso]
END
--GO
CREATE TABLE [dbo].[Compromiso](
	[Id] [int] IDENTITY(1,1) PRIMARY KEY NOT NULL,
	[CodCompromiso] [varchar](16) NOT NULL,
	[CodSolicitud] [varchar](32) NOT NULL,
	[CodPresupuesto] [varchar](16) NOT NULL,
	[CodRubro] [varchar](16) NOT NULL,
	[CodCentroCosto] [varchar](16) NOT NULL,
	[CodCuentaContable] [varchar](16) NOT NULL,
	[CodOrdenCompra] [varchar](32),-- NOT NULL,
	[CodContrato] [varchar](32),-- NOT NULL,
	[ItemsOrdenCompra] [varchar](512),-- NOT NULL,  --- una lista con los items definidos en la odrden que seran comprometidos.
	[FechaCreacion] [datetime] DEFAULT GETDATE() NOT NULL,
	[FechaUltMod] [datetime] DEFAULT GETDATE() NOT NULL,
	[ValorInicialCompromiso] [decimal](18,2) NOT NULL,
	[SaldoActualCompromiso] [decimal](18,2) NOT NULL DEFAULT 0,
	[Observaciones] VARCHAR(MAX) NULL,
	[Usuario] [varchar](32) NOT NULL,
	[CodCompromiso_REVERSION] [varchar](16) NULL,	
	[IdProveedor] INT NULL,
	[NombreProveedor] VARCHAR(256) NULL	,
	[OrdenGlobal] BIT DEFAULT 0 NOT NULL,	
	[EsReversion] BIT DEFAULT 0 NOT NULL,
	[FechaAprobacion] DATE DEFAULT GETDATE() NOT NULL		
)
--GO

ALTER TABLE [Compromiso] ADD CONSTRAINT [UQ_CodCompromiso] UNIQUE(CodCompromiso)
--GO

--ALTER TABLE [Compromiso] ADD CONSTRAINT [UQ_CodSolicitud_CodPresupuesto_CodRubro_CodCentroCosto_CodCuentaContable_ValorInicialCompromiso] UNIQUE(CodSolicitud,CodPresupuesto,CodRubro,CodCentroCosto,CodCuentaContable,ValorInicialCompromiso)
--GO

--ALTER TABLE [Compromiso] ADD CONSTRAINT CHK_ValorInicialCompromiso CHECK ([ValorInicialCompromiso]>=0)
----GO

--ALTER TABLE [Compromiso] ADD CONSTRAINT CHK_SaldoActualCompromiso CHECK ([SaldoActualCompromiso]>=0)
----GO

--ALTER TABLE [Compromiso] ADD CONSTRAINT CHK_ValorInicialCompromiso_SaldoActualCompromiso CHECK ([SaldoActualCompromiso]<=[ValorInicialCompromiso])
--GO

ALTER TABLE [dbo].[Compromiso] ADD CONSTRAINT [FK_Compromiso_PresupuestoAnualCabecera] FOREIGN KEY([CodPresupuesto])
REFERENCES [dbo].[PresupuestoAnualCabecera] ([CodPresupuesto])
--GO

ALTER TABLE [dbo].[Compromiso] ADD CONSTRAINT [FK_Compromiso_CompromisoSolicitud] FOREIGN KEY([CodSolicitud])
REFERENCES [dbo].[CompromisoSolicitud] ([CodSolicitud])
--GO

ALTER TABLE [dbo].[Compromiso] ADD CONSTRAINT [FK_Compromiso_RubroAsociacionCuenta] FOREIGN KEY([CodRubro],[CodCuentaContable])
REFERENCES [dbo].[RubroAsociacionCuenta] ([CodRubro],[CodCuentaContable])
--GO

ALTER TABLE [dbo].[Compromiso] ADD CONSTRAINT [FK_Compromiso_Rubro] FOREIGN KEY([CodRubro])
REFERENCES [dbo].[Rubro] ([CodRubro])
--GO

ALTER TABLE [dbo].[Compromiso] ADD  CONSTRAINT [FK_Compromiso_CentroCosto] FOREIGN KEY([CodCentroCosto])
REFERENCES [dbo].[CentroCosto] ([CodCentroCosto])
--GO

ALTER TABLE [dbo].[Compromiso] ADD CONSTRAINT [FK_Compromiso_Usuario] FOREIGN KEY([Usuario])
REFERENCES [dbo].[SeguridadUsuario] ([Login])

--ALTER TABLE [dbo].[Compromiso] ADD CONSTRAINT [FK_Compromiso_CompromisoSolicitud(OrdenCompra)] FOREIGN KEY([CodOrdenCompra])
--REFERENCES [dbo].[CompromisoSolicitud] ([CodOrdenCompra])
----GO

--ALTER TABLE [dbo].[Compromiso] ADD CONSTRAINT [FK_Compromiso_CompromisoSolicitud(Contrato)] FOREIGN KEY([CodContrato])
--REFERENCES [dbo].[CompromisoSolicitud] ([CodContrato])
----GO

--ALTER TABLE [dbo].[Compromiso] ADD CONSTRAINT [FK_Compromiso_PresupuestoAnualDetalle] FOREIGN KEY([CodPresupuesto], [CodRubro], [CodCentroCosto])
--REFERENCES [dbo].[PresupuestoAnualDetalle] ([CodPresupuesto], [CodRubro], [CodCentroCosto])
----GO

-----------------------------------------------------------------
-----------------------------------------------------------------
-----------------------------------------------------------------

IF EXISTS (SELECT * FROM SYSOBJECTS WHERE name='Compromiso_MovimientoPresupuestal' and XTYPE='U')
BEGIN
	DROP TABLE [dbo].[Compromiso_MovimientoPresupuestal]
END
--GO
CREATE TABLE [dbo].[Compromiso_MovimientoPresupuestal](
	[Id] [int] IDENTITY(1,1) PRIMARY KEY NOT NULL,
	[CodCompromiso] [varchar](16) NOT NULL,
	[CodMovimiento] [varchar](16) NOT NULL	
)

ALTER TABLE [Compromiso_MovimientoPresupuestal] ADD CONSTRAINT [UQ_Compromiso_MovimientoPresupuestal] UNIQUE(CodCompromiso,CodMovimiento)
--GO
ALTER TABLE [dbo].[Compromiso_MovimientoPresupuestal] ADD CONSTRAINT [FK_CompromisoMovimientoPresupuestal_Compromiso] FOREIGN KEY([CodCompromiso])
REFERENCES [dbo].[Compromiso] ([CodCompromiso])
--GO
ALTER TABLE [dbo].[Compromiso_MovimientoPresupuestal] ADD CONSTRAINT [FK_CompromisoMovimientoPresupuestal_PresupuestoMovimiento] FOREIGN KEY([CodMovimiento])
REFERENCES [dbo].[PresupuestoMovimiento] ([CodMovimiento])

/*
-----------------------------------------------------------------
-----------------------------------------------------------------
-----------------------------------------------------------------
	
IF EXISTS (SELECT * FROM SYSOBJECTS WHERE name='RegistroINFORDetalle' and XTYPE='U')
BEGIN
	DROP TABLE [dbo].[RegistroINFORDetalle]
END
--GO

CREATE TABLE [dbo].[RegistroINFOR_EXCEL](
	[Id] INT IDENTITY(1,1) PRIMARY KEY NOT NULL,
	[CodRegistro] VARCHAR(16) NOT NULL,
	[CodCompromiso] VARCHAR(16),
	[CodCentroCosto] VARCHAR(16),
	[FechaRegistro] DATE,
	[Periodo] VARCHAR(6),
	[CodPresupuesto] [varchar](16),
	[CodFactura] VARCHAR(64),
	[CodCuenta] VARCHAR(16),
	[CodContrato] [VARCHAR](28),
	[IdProveedor] [VARCHAR](4),
	[Observaciones]  [VARCHAR](256),
	[ValorRegistro] NUMERIC(18,2)
)
--GO
ALTER TABLE [RegistroINFOR_EXCEL] ADD CONSTRAINT [UQ_RegistroINFOR_EXCEL_CodRegistro] UNIQUE (CodRegistro)
*/
-----------------------------------------------------------------
-----------------------------------------------------------------
-----------------------------------------------------------------

IF EXISTS (SELECT * FROM SYSOBJECTS WHERE name='RegistroINFORCabecera' and XTYPE='U')
BEGIN
	DROP TABLE [dbo].[RegistroINFORCabecera]
END
--GO

CREATE TABLE [dbo].[RegistroINFORCabecera](
	[Id] INT IDENTITY(1,1) PRIMARY KEY NOT NULL,
	[Periodo] VARCHAR(6) NOT NULL,
	[FechaGrab] DATETIME NOT NULL DEFAULT GETDATE(),
	[Usuario] VARCHAR(32) NOT NULL,
	[Observaciones] VARCHAR(MAX)
)
--GO
ALTER TABLE [RegistroINFORCabecera] ADD CONSTRAINT [UQ_RegistroINFORCabecera_Periodo] UNIQUE (Periodo)
--GO
ALTER TABLE [dbo].[RegistroINFORCabecera] ADD CONSTRAINT [FK_RegistroINFORCabecera_Usuario] FOREIGN KEY([Usuario])
REFERENCES [dbo].[SeguridadUsuario] ([Login])
--GO
-----------------------------------------------------------------
-----------------------------------------------------------------
-----------------------------------------------------------------
	
IF EXISTS (SELECT * FROM SYSOBJECTS WHERE name='RegistroINFORDetalle' and XTYPE='U')
BEGIN
	DROP TABLE [dbo].[RegistroINFORDetalle]
END
--GO

CREATE TABLE [dbo].[RegistroINFORDetalle](
	[Id] INT IDENTITY(1,1) PRIMARY KEY NOT NULL,
	[CodRegistro] VARCHAR(16) NOT NULL,
	[NumeroTransaccion] VARCHAR(16),
	[LineaLibroGeneral] INT,
	[Periodo] VARCHAR(6) NOT NULL,
	[CodCompromiso] VARCHAR(16),
	[CodCompromiso_FechaGrab] DATETIME,
	[CodCompromiso_Usuario] VARCHAR(32),	
	[IdTransaccion] INT,
	[TipoTransaccion] VARCHAR(4),
	[DivisionAdministrativa] VARCHAR(16),
	[CentroCosto] VARCHAR(16) NOT NULL,
	[UsuarioINFOR] VARCHAR(16),
	[CuentaContable] VARCHAR(16) NOT NULL,
	[Valor] DECIMAL(18,2) NOT NULL,
	[Moneda] VARCHAR(4),
	[DescripcionLinea] VARCHAR(128) NOT NULL,
	[DescripcionCabecera] VARCHAR(128),
	[IdEntidad] INT,
	[FechaDocumento] DATE,
	[FechaEfectiva] DATE,
	[FechaCreacion] DATE NOT NULL,
	[ReferenciaTransaccion] VARCHAR(64),
	[ReferenciaOrden] VARCHAR(16),
	[ValorMDF] DECIMAL(18,2),
	[NombreEntidad] VARCHAR(32)
)
--GO
ALTER TABLE [RegistroINFORDetalle] ADD CONSTRAINT [UQ_RegistroINFORDetalle_CodRegistro] UNIQUE (CodRegistro)
--GO
--ALTER TABLE [RegistroINFORDetalle] ADD CONSTRAINT [UQ_RegistroINFORDetalle_NumeroTransaccion_LineaLibroGeneral_Valor] UNIQUE (NumeroTransaccion,LineaLibroGeneral,Valor)
--GO
ALTER TABLE [dbo].[RegistroINFORDetalle] ADD CONSTRAINT [FK_RegistroINFORDetalle_RegistroINFORCabecera] FOREIGN KEY([Periodo])
REFERENCES [dbo].[RegistroINFORCabecera] ([Periodo])
--GO
ALTER TABLE [dbo].[RegistroINFORDetalle] ADD CONSTRAINT [FK_RegistroINFORDetalle_Compromiso] FOREIGN KEY([CodCompromiso])
REFERENCES [dbo].[Compromiso] ([CodCompromiso])
--GO
ALTER TABLE [dbo].[RegistroINFORDetalle] ADD CONSTRAINT [FK_RegistroINFORDetalle_Usuario] FOREIGN KEY([CodCompromiso_Usuario])
REFERENCES [dbo].[SeguridadUsuario] ([Login])

-----------------------------------------------------------------
-----------------------------------------------------------------
-----------------------------------------------------------------

IF EXISTS (SELECT * FROM SYSOBJECTS WHERE name='OrdenesDeCompra' and XTYPE='U')
BEGIN
	DROP TABLE [dbo].[OrdenesDeCompra]
END
--GO
CREATE TABLE [dbo].[OrdenesDeCompra](
	 Id INT IDENTITY(1,1) PRIMARY KEY NOT NULL
	,NumOrden VARCHAR(16) NOT NULL
	,DescripcionOrden VARCHAR(256)
	,EstadoOrden VARCHAR(8)
	,FechaCreacionOrden VARCHAR(16) NOT NULL
	,ValorOrden NUMERIC(18,2) NOT NULL
	,CodProveedor VARCHAR(16) NOT NULL
 	,NombreProveedor VARCHAR(128)
	,Almacen VARCHAR(8)
	,CodAnalistaCompra VARCHAR(16)
	,DESCRIPCION VARCHAR(256)
)
--GO
ALTER TABLE [OrdenesDeCompra] ADD CONSTRAINT [UQ_OrdenesDeCompra_NumOrden] UNIQUE (NumOrden)

